Introduction

This is a brief workflow highlighting the exploratory analysis of survey data mined to assist in the writing of the manuscript, “Gender Disparities Persist in Endoscopy Suite” (Rabinowitz, et al.). Where appropriate, samples of the exact R syntax used will be displayed, along with the corresponding output (tabular data, graphical plots, maps, etc.).




DATA CLEAN-UP


require(broom)
require(dplyr)

SURVEY  <-
    GENDER_DIFF_DATA_LABELS %>% 
    filter( COMPLETE != "Incomplete" &
            BIRTHSEX != "OTHER" &
            !is.na(BIRTHSEX) ) %>% 
   select( BIRTHSEX, RACE_SOUTHASIAN:RACE_OTHER, AGE, TRAINING_LEVEL, HEIGHT, GLOVE, GLOVE_SIZE_AVAILABLE, PERFORMANCE_HOURS, TEACHER_GENDER_PREFERENCE,
           FEMALE_TRAINERS, MALE_TRAINERS, EVER_INJURED, EXPERIENCED_TRANSIENT_PAIN_NO, EXPERIENCED_TRANSIENT_PAIN_HAND, EXPERIENCED_TRANSIENT_PAIN_NECK_SHOULDER,
           EXPERIENCED_TRANSIENT_PAIN_BACK, EXPERIENCED_TRANSIENT_PAIN_LEG, EXPERIENCED_TRANSIENT_PAIN_FOOT, GROWING_PAINS,
           FELLOWSHIP_FORMAL_ERGO_TRAINING, INFORMAL_TRAINING, TRAINING_TECHNIQUES_POSTURAL, TRAINING_TECHNIQUES_BEDHEIGHT, TRAINING_TECHNIQUES_BEDANGLE,
           TRAINING_TECHNIQUES_MONITORHEIGHT, TRAINING_TECHNIQUES_MUSCULOSKELETAL, TRAINING_TECHNIQUES_EXERCISE_STRETCHING, TRAINING_TECHNIQUES_DIAL_EXTENDERS,
           TRAINING_TECHNIQUES_PEDIATRIC_COLONOSCOPE, ERGO_TRAINING_BUDGET, ERGO_FEEDBACK, ERGO_FEEDBACK_BY_WHOM, ERGO_OPTIMIZATION, GLOVE_SIZE_AVAILABLE,
           DIAL_EXTENDERS_AVAILABLE, DIAL_EXTENDERS_ENCOURAGED, DIAL_EXTENDERS_FEMALEATT, DIAL_EXTENDERS_MALEATT, PEDI_COLONOSCOPES_AVAILABLE) %>% 
  
    mutate(AGE2 = ifelse( AGE %in% c('< 30', '30-34', '35-40'), AGE, '> 40' )) %>% 
  
  
    mutate( RACE = ifelse( RACE_HISPANIC == "Y", "HISPANIC",
                   ifelse( RACE_WHITE == "Y", "WHITE",
                   ifelse( RACE_BLACK == "Y", "BLACK",
                   ifelse (RACE_SOUTHASIAN == "Y", "ASIAN SOUTH",
                   ifelse (RACE_EASTASIAN == "Y", "ASIAN EAST",
                   ifelse (RACE_NATIVEAMER == "Y", "OTHER",
                   ifelse (RACE_PACIFICISLAND == "Y", "OTHER",
                   ifelse (RACE_OTHER == "Y", "OTHER", "OTHER" )))))))))  %>% 
    mutate( BIRTHSEX = factor( BIRTHSEX,  levels= c("F","M") ))  %>% 
    mutate (AGE2 = factor(AGE2, levels = c('< 30', '30-34', '35-40', '> 40'))) %>%  
    mutate( RACE = factor(RACE, levels= c('ASIAN EAST', 'ASIAN SOUTH', 'BLACK', 'HISPANIC', 'WHITE', 'OTHER'))) %>% 
    mutate( TRAINING_LEVEL = factor (TRAINING_LEVEL, levels= c('First year fellow','Second year fellow', 'Third year fellow', 'Advanced fellow'))) %>% 
    mutate( TRAINING_LEVEL = recode_factor( TRAINING_LEVEL, 'First year fellow'= 'First Year', 
                                                            'Second year fellow'= 'Second Year', 
                                                            'Third year fellow' = 'Third Year', 
                                                            'Advanced fellow' = "Avanced", .ordered = T) ) %>% 
   mutate( HEIGHT2 = factor(HEIGHT, levels= c("< 5'", "5-5'3", "5'4-5'6", "5'7-5'9", "5'10-6'", "6'1-6'4", "> 6'4"))) %>% 
   mutate( PERFORMANCE_HOURS = factor(PERFORMANCE_HOURS),
           PERFORMANCE_HOURS = recode_factor(PERFORMANCE_HOURS, "< 10" = "< 10",
                                                               "10-20" = "10-20",
                                                               "21-30" = "21-30",
                                                               "31-40" = "31-40",
                                                               .default = "> 40")) %>% 
  
  mutate(TEACHER_GENDER_PREFERENCE = factor(TEACHER_GENDER_PREFERENCE),
         TEACHER_GENDER_PREFERENCE = recode_factor(TEACHER_GENDER_PREFERENCE, "Yes" = "Yes",
                                                                      .default = "No")) %>% 
  
  mutate( FEMALE_TRAINERS = factor(FEMALE_TRAINERS),
          FEMALE_TRAINERS = recode_factor(FEMALE_TRAINERS, 'None' = 'None',
                                                           '1-2' = '1-2',
                                                           '3-5' = '3-5',
                                                           '6-10' = '6-10',
                                                           '> 10' = '> 10' )) %>% 
  mutate( MALE_TRAINERS = factor(MALE_TRAINERS),
          MALE_TRAINERS = recode_factor(MALE_TRAINERS, 'None' = 'None',
                                                           '1-2' = '1-2',
                                                           '3-5' = '3-5',
                                                           '6-10' = '6-10',
                                                           '> 10' = '> 10' )) %>% 
  
  mutate( EVER_INJURED = factor(EVER_INJURED)) %>% 
  mutate( EXPERIENCED_TRANSIENT_PAIN_NO = factor(EXPERIENCED_TRANSIENT_PAIN_NO)) %>% 
  mutate( EXPERIENCED_TRANSIENT_PAIN_HAND = factor(EXPERIENCED_TRANSIENT_PAIN_HAND)) %>% 
  mutate( EXPERIENCED_TRANSIENT_PAIN_NECK_SHOULDER = factor(EXPERIENCED_TRANSIENT_PAIN_NECK_SHOULDER)) %>% 
  mutate( EXPERIENCED_TRANSIENT_PAIN_BACK = factor(EXPERIENCED_TRANSIENT_PAIN_BACK)) %>% 
  mutate( EXPERIENCED_TRANSIENT_PAIN_LEG = factor(EXPERIENCED_TRANSIENT_PAIN_LEG)) %>% 
  mutate( EXPERIENCED_TRANSIENT_PAIN_FOOT = factor(EXPERIENCED_TRANSIENT_PAIN_FOOT))  %>% 
  
  mutate( GROWING_PAINS = factor(GROWING_PAINS)) %>% 
  mutate( FELLOWSHIP_FORMAL_ERGO_TRAINING = factor(FELLOWSHIP_FORMAL_ERGO_TRAINING)) %>% 
  mutate( INFORMAL_TRAINING = factor(INFORMAL_TRAINING)) %>% 
  mutate( TRAINING_TECHNIQUES_POSTURAL = factor(TRAINING_TECHNIQUES_POSTURAL)) %>% 
  mutate( TRAINING_TECHNIQUES_BEDHEIGHT = factor(TRAINING_TECHNIQUES_BEDHEIGHT)) %>% 
  mutate( TRAINING_TECHNIQUES_BEDANGLE = factor(TRAINING_TECHNIQUES_BEDANGLE)) %>% 
  mutate( TRAINING_TECHNIQUES_MONITORHEIGHT = factor(TRAINING_TECHNIQUES_MONITORHEIGHT)) %>% 
  mutate( TRAINING_TECHNIQUES_MUSCULOSKELETAL = factor(TRAINING_TECHNIQUES_MUSCULOSKELETAL)) %>% 
  mutate( TRAINING_TECHNIQUES_EXERCISE_STRETCHING = factor(TRAINING_TECHNIQUES_EXERCISE_STRETCHING)) %>% 
  mutate( TRAINING_TECHNIQUES_DIAL_EXTENDERS = factor(TRAINING_TECHNIQUES_DIAL_EXTENDERS)) %>% 
  mutate( TRAINING_TECHNIQUES_PEDIATRIC_COLONOSCOPE = factor(TRAINING_TECHNIQUES_PEDIATRIC_COLONOSCOPE)) %>% 
  
  mutate( ERGO_TRAINING_BUDGET = factor(ERGO_TRAINING_BUDGET),
          ERGO_TRAINING_BUDGET = recode_factor(ERGO_TRAINING_BUDGET, 'Yes' = 'Y',
                                                                     'No' = 'N',
                                                                     "Don't know" = 'DK', .ordered= T)) %>% 
  

  mutate( ERGO_FEEDBACK = factor(ERGO_FEEDBACK),
          ERGO_FEEDBACK = recode_factor(ERGO_FEEDBACK, 'Never' = 'Never',
                                                       'Rarely' = 'Rarely',
                                                       'Sometimes' = 'Sometimes',
                                                        'Often' = 'Often', .ordered = T )) %>% 
            
  mutate( ERGO_FEEDBACK_BY_WHOM = factor(ERGO_FEEDBACK_BY_WHOM),
          ERGO_FEEDBACK_BY_WHOM = recode_factor(ERGO_FEEDBACK_BY_WHOM, 'I do not or rarely receive ergonomic feedback' = "Do not/rarely received feedback",
                                                                     'Mostly male endoscopy teachers' = 'Mostly male teachers',
                                                                     'Mostly female endoscopy teachers' = 'Mostly female teachers',
                                                                     'Both male and female endoscopy teachers equally' = 'Both equally' , .ordered = T)) %>% 
  
  
  mutate( ERGO_OPTIMIZATION = factor(ERGO_OPTIMIZATION),
          ERGO_OPTIMIZATION = recode_factor(ERGO_OPTIMIZATION, 'Y' = 'Y',
                                                                     'N' = 'N',
                                                                     "Don't know" = 'DK', .ordered= T)) %>% 
  
  mutate( GLOVE_SIZE_AVAILABLE = factor(GLOVE_SIZE_AVAILABLE)) %>% 
  
  mutate( DIAL_EXTENDERS_AVAILABLE = factor(DIAL_EXTENDERS_AVAILABLE),
          DIAL_EXTENDERS_AVAILABLE = recode_factor(DIAL_EXTENDERS_AVAILABLE, 'Y' = 'Y',
                                                                             'N' = 'N',
                                                                             "Don't know" = 'DK', .ordered= T)) %>% 
  
  mutate( DIAL_EXTENDERS_ENCOURAGED = factor(DIAL_EXTENDERS_ENCOURAGED),
          DIAL_EXTENDERS_ENCOURAGED = recode_factor(DIAL_EXTENDERS_ENCOURAGED, 'Y' = 'Y',
                                                                                 'N' = 'N',
                                                                                 "Don't use" = 'DU', .ordered= T)) %>% 
  
  

  mutate( DIAL_EXTENDERS_FEMALEATT = factor(DIAL_EXTENDERS_FEMALEATT),
          DIAL_EXTENDERS_FEMALEATT = recode_factor(DIAL_EXTENDERS_FEMALEATT, 'Not Likely' = 'Not Likely',
                                                                             'Somewhat Likely' = 'Somewhat Likely',
                                                                             'Sometimes' = 'Sometimes',
                                                                             'Verly Likely' = 'Very Likely',
                                                                             'NA' = 'NA', .ordered = T )) %>% 

  mutate( DIAL_EXTENDERS_MALEATT = factor(DIAL_EXTENDERS_MALEATT),
          DIAL_EXTENDERS_MALEATT = recode_factor(DIAL_EXTENDERS_MALEATT, 'Not Likely' = 'Not Likely',
                                                                             'Somewhat Likely' = 'Somewhat Likely',
                                                                             'Sometimes' = 'Sometimes',
                                                                             'Verly Likely' = 'Very Likely',
                                                                             'NA' = 'NA', .ordered = T ))  %>% 
    mutate( PEDI_COLONOSCOPES_AVAILABLE = factor(PEDI_COLONOSCOPES_AVAILABLE),
          PEDI_COLONOSCOPES_AVAILABLE = recode_factor(PEDI_COLONOSCOPES_AVAILABLE, 'Y' = 'Y',
                                                                                   'N' = 'N',
                                                                                   "Don't know" = 'DK', .ordered= T))


Here’s a glimpse of the structure of the resulting dataset SURVEY:

glimpse(SURVEY)
## Rows: 200
## Columns: 48
## $ BIRTHSEX                                  <fct> F, F, F, M, F, F, F, F, F, M…
## $ RACE_SOUTHASIAN                           <chr> "N", "N", "N", "Y", "N", "N"…
## $ RACE_EASTASIAN                            <chr> "N", "N", "N", "N", "Y", "Y"…
## $ RACE_WHITE                                <chr> "N", "Y", "Y", "N", "N", "N"…
## $ RACE_BLACK                                <chr> "N", "N", "N", "N", "N", "N"…
## $ RACE_HISPANIC                             <chr> "Y", "N", "N", "N", "N", "N"…
## $ RACE_NATIVEAMER                           <chr> "N", "N", "N", "N", "N", "N"…
## $ RACE_PACIFICISLAND                        <chr> "N", "N", "N", "N", "N", "N"…
## $ RACE_OTHER                                <chr> "N", "N", "N", "N", "N", "N"…
## $ AGE                                       <chr> "30-34", "30-34", "30-34", "…
## $ TRAINING_LEVEL                            <ord> Third Year, Third Year, Firs…
## $ HEIGHT                                    <chr> "5'4-5'6", "5'4-5'6", "5'4-5…
## $ GLOVE                                     <dbl> 6.5, 6.5, 6.0, 7.0, 6.5, 5.5…
## $ GLOVE_SIZE_AVAILABLE                      <fct> Y, Y, Y, Y, N, N, Y, Y, N, Y…
## $ PERFORMANCE_HOURS                         <fct> 10-20, < 10, 10-20, 31-40, 1…
## $ TEACHER_GENDER_PREFERENCE                 <fct> No, No, Yes, No, No, No, No,…
## $ FEMALE_TRAINERS                           <fct> None, 6-10, 6-10, 6-10, 6-10…
## $ MALE_TRAINERS                             <fct> 6-10, > 10, > 10, > 10, > 10…
## $ EVER_INJURED                              <fct> N, N, N, N, Y, N, N, N, N, N…
## $ EXPERIENCED_TRANSIENT_PAIN_NO             <fct> Y, N, N, N, N, N, N, N, N, N…
## $ EXPERIENCED_TRANSIENT_PAIN_HAND           <fct> N, Y, Y, Y, Y, Y, Y, N, N, Y…
## $ EXPERIENCED_TRANSIENT_PAIN_NECK_SHOULDER  <fct> N, Y, Y, Y, Y, N, Y, Y, Y, Y…
## $ EXPERIENCED_TRANSIENT_PAIN_BACK           <fct> N, Y, Y, Y, Y, N, Y, N, N, Y…
## $ EXPERIENCED_TRANSIENT_PAIN_LEG            <fct> N, N, Y, Y, N, N, N, N, N, N…
## $ EXPERIENCED_TRANSIENT_PAIN_FOOT           <fct> N, N, Y, Y, N, Y, N, N, N, N…
## $ GROWING_PAINS                             <fct> NA, Y, Y, Y, Y, N, N, Y, N, …
## $ FELLOWSHIP_FORMAL_ERGO_TRAINING           <fct> N, N, N, N, N, N, N, Y, N, Y…
## $ INFORMAL_TRAINING                         <fct> Y, Y, Y, Y, Y, Y, N, Y, Y, Y…
## $ TRAINING_TECHNIQUES_POSTURAL              <fct> Y, N, Y, Y, N, Y, Y, Y, N, Y…
## $ TRAINING_TECHNIQUES_BEDHEIGHT             <fct> Y, Y, Y, Y, Y, Y, Y, Y, Y, Y…
## $ TRAINING_TECHNIQUES_BEDANGLE              <fct> Y, N, Y, Y, N, Y, Y, N, Y, Y…
## $ TRAINING_TECHNIQUES_MONITORHEIGHT         <fct> Y, N, N, Y, N, Y, Y, N, Y, Y…
## $ TRAINING_TECHNIQUES_MUSCULOSKELETAL       <fct> Y, N, N, Y, N, N, N, Y, Y, N…
## $ TRAINING_TECHNIQUES_EXERCISE_STRETCHING   <fct> N, N, N, N, N, N, N, N, N, N…
## $ TRAINING_TECHNIQUES_DIAL_EXTENDERS        <fct> N, N, Y, N, Y, N, Y, N, N, N…
## $ TRAINING_TECHNIQUES_PEDIATRIC_COLONOSCOPE <fct> Y, N, Y, Y, Y, N, Y, Y, Y, N…
## $ ERGO_TRAINING_BUDGET                      <ord> DK, N, DK, DK, N, DK, DK, N,…
## $ ERGO_FEEDBACK                             <ord> Sometimes, Rarely, Sometimes…
## $ ERGO_FEEDBACK_BY_WHOM                     <ord> Mostly male teachers, Mostly…
## $ ERGO_OPTIMIZATION                         <ord> DK, N, N, Y, N, N, Y, DK, N,…
## $ DIAL_EXTENDERS_AVAILABLE                  <ord> DK, N, Y, Y, Y, N, Y, DK, N,…
## $ DIAL_EXTENDERS_ENCOURAGED                 <ord> DU, N, Y, Y, Y, DU, Y, NA, N…
## $ DIAL_EXTENDERS_FEMALEATT                  <ord> NA, NA, Not likely, NA, Very…
## $ DIAL_EXTENDERS_MALEATT                    <ord> NA, NA, Very likely, NA, Ver…
## $ PEDI_COLONOSCOPES_AVAILABLE               <ord> Y, Y, Y, Y, Y, Y, Y, Y, Y, Y…
## $ AGE2                                      <fct> 30-34, 30-34, 30-34, 30-34, …
## $ RACE                                      <fct> HISPANIC, WHITE, WHITE, ASIA…
## $ HEIGHT2                                   <fct> 5'4-5'6, 5'4-5'6, 5'4-5'6, 6…


DEMOGRAPHIC DATA


Question 1: Distribution of RACE x AGE


#SJPlot cross tabulation with Chi-Square/df
  
plot_xtab(SURVEY$AGE2, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Age Distribution by Birth Sex",
          axis.titles = c('Respondents Age Bands'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())



Question 2: Distribution of RACE x BIRTHSEX


#SJPlot cross tabulation with Chi-Square/df
  
plot_xtab(SURVEY$RACE, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Race Distribution by Birth Sex",
          axis.titles = c('Race Categories '), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())



Question 3: Distribution of TRAINING LEVEL x BIRTHSEX


#SJPlot cross tabulation with Chi-Square/df
  
plot_xtab(SURVEY$TRAINING_LEVEL, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Training Levels by Birth Sex",
          axis.titles = c('Training Levels'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())



Question 4: Distribution of HEIGHT2 x BIRTHSEX


#SJPlot cross tabulation with Chi-Square/df
  
plot_xtab(SURVEY$HEIGHT2, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Height Bands by Birth Sex",
          axis.titles = c('Height Bands'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())



Question 5: Distribution of GLOVE SIZE x BIRTHSEX


#SJPlot cross tabulation with Chi-Square/df
  
plot_xtab(SURVEY$GLOVE, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Glove Size by Birth Sex",
          axis.titles = c('Glove Sizes'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())

#Mean Glove Size - Sex Difference ?

eov.ttest(SURVEY, GLOVE, BIRTHSEX)
## [1] "F Test p.value = 0.498562  EOV = TRUE (Pooled)"
## [1] "SURVEY : GLOVE ~ BIRTHSEX"
## 
##  Two Sample t-test
## 
## data:  SURVEY : GLOVE ~ BIRTHSEX
## t = -15.727, df = 193, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group F and group M is not equal to 0
## 95 percent confidence interval:
##  -1.1067612 -0.8600948
## sample estimates:
## mean in group F mean in group M 
##        6.380208        7.363636



Question 6: Distribution of AVG ENDOSCOPY HOURS x BIRTHSEX


#SJPlot cross tabulation with Chi-Square/df
  
plot_xtab(SURVEY$PERFORMANCE_HOURS, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Performance Hours by Birth Sex",
          axis.titles = c('Performance Hour Bands'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())
## Warning in stats::chisq.test(ftab): Chi-squared approximation may be incorrect



Question 7: Distribution of TEACHER SEX PEREFERENCE x BIRTHSEX


#SJPlot cross tabulation with Chi-Square/df
  
plot_xtab(SURVEY$TEACHER_GENDER_PREFERENCE, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE,
          title = "Teacher Sex Preference by Birth Sex",
          axis.titles = c('Trainer Sex Preference?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())



Question 8A & 8B: Distribution of NUMBER OF TEACHERS BY SEX x BIRTHSEX


#SJPlot cross tabulation with Chi-Square/df
  
plot_xtab(SURVEY$FEMALE_TRAINERS, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Number of Female Trainers by Birth Sex",
          axis.titles = c('Approx. Female Trainers'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())
## Warning in stats::chisq.test(ftab): Chi-squared approximation may be incorrect

plot_xtab(SURVEY$MALE_TRAINERS, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Number of Male Trainers by Birth Sex",
          axis.titles = c('Approx. Male Trainers'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())
## Warning in stats::chisq.test(ftab): Chi-squared approximation may be incorrect



Question 10A-10E: Transient Pain Immediately Following Session - Specific Body Part


#SJPlot cross tabulation with Chi-Square/df
  
plot_xtab(SURVEY$EXPERIENCED_TRANSIENT_PAIN_HAND, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Transient Pain in Hand after Procedure by Birth Sex",
          axis.titles = c('Transient Hand Pain?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())

plot_xtab(SURVEY$EXPERIENCED_TRANSIENT_PAIN_NECK_SHOULDER, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Transient Pain in Neck/Shoulder after Procedure by Birth Sex",
          axis.titles = c('Transient Neck/Shoulder Pain?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())

plot_xtab(SURVEY$EXPERIENCED_TRANSIENT_PAIN_BACK, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Transient Pain in Back after Procedure by Birth Sex",
          axis.titles = c('Transient Back Pain?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())

plot_xtab(SURVEY$EXPERIENCED_TRANSIENT_PAIN_LEG, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Transient Pain in Leg after Procedure by Birth Sex",
          axis.titles = c('Transient Leg Pain?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())

plot_xtab(SURVEY$EXPERIENCED_TRANSIENT_PAIN_FOOT, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Transient Pain in Foot after Procedure by Birth Sex",
          axis.titles = c('Transient Foot Pain?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())



Question 11: Told Injuries were “Growing Pains” x BIRTHSEX

(Exclude all respondents who did not report having been injured)


#SJPlot cross tabulation with Chi-Square/df
  

SUBSET <-  sqldf( "select BIRTHSEX,
                          GROWING_PAINS
                  from SURVEY
                  where GROWING_PAINS != 'NA' ")

SUBSET <- SUBSET %>% 
    mutate(GROWING_PAINS = recode_factor( GROWING_PAINS, "N" = "N",
                                                         "Y" = "Y")) %>% droplevels()

          

plot_xtab(SUBSET$GROWING_PAINS, SUBSET$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Told Injuries were Growing Pains by Birth Sex",
          axis.titles = c('Injuries Growing Pains?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())



ENDOSCOPIC SUITE ENVIRONMENT

Question 1A & 1B: Distribution of FORMAL TRAINING & INFORMAL TRAINING by BIRTH SEX


plot_xtab(SURVEY$FELLOWSHIP_FORMAL_ERGO_TRAINING, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Formal Ergo Training by Birth Sex",
          axis.titles = c('Formal Ergo Training Provided?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())

plot_xtab(SURVEY$INFORMAL_TRAINING, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Informal Ergo Training by Birth Sex",
          axis.titles = c('Informal Ergo Training Provided?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())



Question 2A-2H: Distribution of TECHNIQUES DISCUSSED DURING TRAINING by BIRTH SEX


plot_xtab(SURVEY$TRAINING_TECHNIQUES_POSTURAL, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Training on Postural Awareness by Birth Sex",
          axis.titles = c('Postural Awareness Training Provided?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())

plot_xtab(SURVEY$TRAINING_TECHNIQUES_BEDHEIGHT, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Training on Bed Height Adjustments by Birth Sex",
          axis.titles = c('Bed Height Adjustment Training Provided?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())
## Warning in stats::chisq.test(ftab): Chi-squared approximation may be incorrect

plot_xtab(SURVEY$TRAINING_TECHNIQUES_BEDANGLE, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Training on Bed Angle Adjustments by Birth Sex",
          axis.titles = c('Bed Angle Adjustment Training Provided?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())

plot_xtab(SURVEY$TRAINING_TECHNIQUES_MONITORHEIGHT, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Training on Monitor Height Adjustments by Birth Sex",
          axis.titles = c('Monitor Height Adjustment Training Provided?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())

plot_xtab(SURVEY$TRAINING_TECHNIQUES_MUSCULOSKELETAL, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Training on Musculoskeletal Maneuvers by Birth Sex",
          axis.titles = c('Musculoskeletal Maneuvers Training Provided?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())

plot_xtab(SURVEY$TRAINING_TECHNIQUES_EXERCISE_STRETCHING, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Training on Exercise/Stretching by Birth Sex",
          axis.titles = c('Exercise/Stretching Adjustment Training Provided?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())

plot_xtab(SURVEY$TRAINING_TECHNIQUES_DIAL_EXTENDERS, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Training on Dial Extenders by Birth Sex",
          axis.titles = c('Dial Extenders Training Provided?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())

plot_xtab(SURVEY$TRAINING_TECHNIQUES_PEDIATRIC_COLONOSCOPE, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Training on Pediatric Colonoscopes by Birth Sex",
          axis.titles = c('Pedi Colonoscopes Training Provided?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())



Question 3: Distribution of BUDGET ALLOTMENT by BIRTH SEX


plot_xtab(SURVEY$ERGO_TRAINING_BUDGET, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Ergonomic Training Budget by Birth Sex",
          axis.titles = c('Ergonomic Training Budget?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())
## Warning in stats::chisq.test(ftab): Chi-squared approximation may be incorrect



Question 4A & 4B: Distribution of FEEBACK FREQUENCY & FEEDBACK BY WHOM by BIRTH SEX


plot_xtab(SURVEY$ERGO_FEEDBACK, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Ergo Feedback Frequency by Birth Sex",
          axis.titles = c('How Frequently Ergo Feedback?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())
## Warning in stats::chisq.test(ftab): Chi-squared approximation may be incorrect

plot_xtab(SURVEY$ERGO_FEEDBACK_BY_WHOM, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Who Provides Ergo Feedback by Birth Sex",
          axis.titles = c('Who Provides Feedback?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())



Question 5A - 5M: Distribution of EQUIPMENT OPITIMIZATOIN & AVAILABILITY by BIRTH SEX


plot_xtab(SURVEY$ERGO_OPTIMIZATION, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Ergonomically Optimized Equipment by Birth Sex",
          axis.titles = c('Equipment Ergonomically Optimized?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())

plot_xtab(SURVEY$GLOVE_SIZE_AVAILABLE, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Glove Size Availability by Birth Sex",
          axis.titles = c('Glove Size Readily Available?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())

plot_xtab(SURVEY$DIAL_EXTENDERS_AVAILABLE, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Dial Extender Availability by Birth Sex",
          axis.titles = c('Dial Extenders Availabile?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())

SUBSET <-  sqldf( "select BIRTHSEX,
                          DIAL_EXTENDERS_ENCOURAGED
                  from SURVEY
                  where DIAL_EXTENDERS_ENCOURAGED != 'DU' ")

SUBSET <- SUBSET %>% 
    mutate(DIAL_EXTENDERS_ENCOURAGED = recode_factor( DIAL_EXTENDERS_ENCOURAGED, "N" = "N",
                                                         "Y" = "Y")) %>% droplevels()



plot_xtab(SUBSET$DIAL_EXTENDERS_ENCOURAGED, SUBSET$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Dial Extenders Encouraged by Birth Sex - (Includes only subjects who use Dial Extenders)",
          axis.titles = c('Dial Extenders Encouraged?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())

SUBSET <-  sqldf( "select BIRTHSEX,
                          DIAL_EXTENDERS_FEMALEATT
                  from SURVEY
                  where DIAL_EXTENDERS_FEMALEATT != 'NA' ")

SUBSET <- SUBSET %>% 
    mutate(DIAL_EXTENDERS_FEMALEATT = recode_factor( DIAL_EXTENDERS_FEMALEATT, "N" = "N",
                                                         "Y" = "Y")) %>% droplevels()



plot_xtab(SUBSET$DIAL_EXTENDERS_FEMALEATT, SUBSET$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Dial Extenders Encouraged with Female Att by Birth Sex - (Includes only subjects who use Dial Extenders)",
          axis.titles = c('Dial Extenders Encouraged by Female Att?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())
## Warning in stats::chisq.test(ftab): Chi-squared approximation may be incorrect

SUBSET <-  sqldf( "select BIRTHSEX,
                          DIAL_EXTENDERS_MALEATT
                  from SURVEY
                  where DIAL_EXTENDERS_MALEATT != 'NA' ")

SUBSET <- SUBSET %>% 
    mutate(DIAL_EXTENDERS_MALEATT = recode_factor( DIAL_EXTENDERS_MALEATT, "N" = "N",
                                                         "Y" = "Y")) %>% droplevels()



plot_xtab(SUBSET$DIAL_EXTENDERS_MALEATT, SUBSET$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Dial Extenders Encouraged with Male Att by Birth Sex - (Includes only subjects who use Dial Extenders)",
          axis.titles = c('Dial Extenders Encouraged by Male Att?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())
## Warning in stats::chisq.test(ftab): Chi-squared approximation may be incorrect

plot_xtab(SURVEY$PEDI_COLONOSCOPES_AVAILABLE, SURVEY$BIRTHSEX, margin = "row", 
          bar.pos = "stack", coord.flip = TRUE, 
          title = "Pediatric Colonoscopes by Birth Sex",
          axis.titles = c('Pedi Colonoscopes Available?'), 
          legend.title= "Birth Sex",
          geom.colors = c("#006cc5","#cbcccb"), 
          show.summary = TRUE )+ 
  set_theme(base= theme_classic())
## Warning in stats::chisq.test(ftab): Chi-squared approximation may be incorrect